void main() {
  // 1. const声明常量
  const num1 = 10;
  print(num1); // 10
  // 报错：Constant variables can't be assigned a value.
  // num1 = 20;   常量的值不能被修改

  // 2. final声明常量
  final num2 = 30;   
  print(num2); // 30
  // 报错：The final variable 'num2' can only be set once.
  // num2 = 40;

  // 3. const和final的区别：

  var x = 1;
  var y = 2;

  // 3.1 final：运行时常量，值在运行时赋值
  final ret1 = x + y;
  print(ret1);

  // 3.2 const：编译期常量，值在编译时赋值，不能动态赋值初始化
  // 报错：Const variables must be initialized with a constant value.
  // const ret2 = x + y;
  const ret3 = 1 + 2;
  print(ret3);


  // 常量：建议优先使用const，编译器不允许的话换final
}